home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
news
/
readers
/
skim-0.8
/
skim-0
/
skim-0.8.4
/
Article.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-18
|
5KB
|
176 lines
/*
* NAME
* Article.h
* DESCRIPTION
* Interface include file of the Article class and its component classes.
* COPYRIGHT
* Skim - Off-line news reading package optimized for slow lines.
* Copyright (C) 1996 Rene W.J. Pijlman
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* VERSION
* Skim version 0.8.4.
*/
#include "VarBuf.h"
/*
* The type or name of the headerline is represented with a character string
* instead of an enum, since it must be possible to represent incoming articles
* with unknown header lines.
*/
typedef const char *
HeaderNameType;
typedef struct _HeaderLine *
HeaderLine;
typedef struct _Header *
Header;
typedef struct _Body *
Body;
typedef struct _Article *
Article;
/* The header lines defined by RFC 1036. */
#define HL_APPROVED "Approved"
#define HL_CONTROL "Control"
#define HL_DATE "Date"
#define HL_DISTRIBUTION "Distribution"
#define HL_EXPIRES "Expires"
#define HL_FOLLOWUP_TO "Followup-To"
#define HL_FROM "From"
#define HL_KEYWORDS "Keywords"
#define HL_LINES "Lines"
#define HL_MESSAGE_ID "Message-ID"
#define HL_NEWSGROUPS "Newsgroups"
#define HL_ORGANIZATION "Organization"
#define HL_PATH "Path"
#define HL_REFERENCES "References"
#define HL_REPLY_TO "Reply-To"
#define HL_SENDER "Sender"
#define HL_SUBJECT "Subject"
#define HL_SUMMARY "Summary"
#define HL_XREF "Xref"
/* Other header lines. */
#define HL_X_NEWSREADER "X-Newsreader"
#define RE_PREFIX "Re:"
#define QUOTE_INDENT ">"
#define DEFAULT_BODY_FOR_NEW_ARTICLE \
"The blank line above separates the header from the body. Don't remove it.\n\
Only the \"Newsgroups:\" and \"Subject:\" header lines may be edited.\n"
Boolean HeaderLineIsMandatory( HeaderNameType );
/*
* The Article class.
*/
/* Create, Destroy */
Article ArticleCreate( void );
Article ArticleConstructNew(
VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf );
Article ArticleConstructReply(
Article, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf );
void ArticleDestroy( Article );
/* Check */
Boolean ArticleIsOK( Article );
Boolean ArticleIsOKAndComplete(Article);
VarBuf ArticleGetErrorMessages( Article );
/* Queries. */
Boolean ArticleContainsHeaderLine( Article, HeaderNameType );
/* Get components or values. */
VarBuf ArticleGetHeaderLineValue( Article , HeaderNameType );
VarBuf ArticleGetVB( Article );
/* Set components or values. */
void ArticleSetHeaderLine( Article, HeaderNameType, VarBuf );
void ArticleSetBody( Article, VarBuf );
void ArticleSetVB( Article, VarBuf );
void ArticleSetDateToCurrentDate( Article );
void ArticleSynchronizeNumberOfLines( Article );
void ArticlePrepareForPost( Article, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf );
/*
* The Header class.
*/
/* Create, Destroy */
Header HeaderCreate( void );
void HeaderDestroy( Header );
/* Check */
Boolean HeaderIsOK( Header );
Boolean HeaderIsOKAndComplete( Header );
VarBuf HeaderGetErrorMessages( Header );
/* Queries. */
Boolean HeaderContainsHeaderLine( Header, HeaderNameType );
/* Get components or values. */
VarBuf HeaderGetVB( Header );
VarBuf HeaderGetHeaderLineValue( Header, HeaderNameType );
/* Set components or values. */
void HeaderSetHeaderLine( Header, HeaderNameType, VarBuf );
/*
* The HeaderLine class.
*/
/* Create, Destroy */
HeaderLine HeaderLineCreate( void );
void HeaderLineDestroy( HeaderLine );
/* Check */
Boolean HeaderLineIsOK( HeaderLine );
/* Queries. */
/* Get components or values. */
/* Set components or values. */
void HeaderLineSet( HeaderLine, HeaderNameType, VarBuf );
void HeaderSetDateToCurrentDate( Header );
/*
* The Body class.
*/
/* Create, Destroy */
Body BodyCreate( void );
void BodyDestroy( Body );
/* Check */
Boolean BodyIsOK( Body );
VarBuf BodyGetErrorMessages( Body );
/* Queries. */
Natural BodyNumnerOfLines( Body );
/* Get components or values. */
VarBuf BodyGetValue( Body );
/* Set components or values. */
void BodySetValue( Body, VarBuf );